package designpattern.sington;
//单例模式
public class Singleton {
    //懒汉式
    private volatile static Singleton singleton;
    public static Singleton getSingleton(){
        //两次判空避免多线程情况下重复创建
        if (singleton==null){
            synchronized (Singleton.class){
                if (singleton==null){
                    //使用volatile禁止指令重排序避免出现返回的对象是未初始化的地址
                    singleton=new Singleton();
                }
            }
        }
        return singleton;
    }
}
